Import("env")

env.Append(
    CPPPATH=[
        "#/lib/nfc",
    ],
    LINT_SOURCES=[
        Dir("."),
    ],
    SDK_HEADERS=[
        # Main
        File("nfc.h"),
        File("nfc_device.h"),
        File("nfc_listener.h"),
        File("nfc_poller.h"),
        File("nfc_scanner.h"),
        File("nfc_common.h"),
        # Protocols
        File("protocols/iso14443_3a/iso14443_3a.h"),
        File("protocols/iso14443_3b/iso14443_3b.h"),
        File("protocols/iso14443_4a/iso14443_4a.h"),
        File("protocols/iso14443_4b/iso14443_4b.h"),
        File("protocols/iso15693_3/iso15693_3.h"),
        File("protocols/felica/felica.h"),
        File("protocols/mf_ultralight/mf_ultralight.h"),
        File("protocols/mf_classic/mf_classic.h"),
        File("protocols/mf_plus/mf_plus.h"),
        File("protocols/mf_desfire/mf_desfire.h"),
        File("protocols/slix/slix.h"),
        File("protocols/st25tb/st25tb.h"),
        File("protocols/ntag4xx/ntag4xx.h"),
        File("protocols/type_4_tag/type_4_tag.h"),
        File("protocols/emv/emv.h"),
        # Pollers
        File("protocols/iso14443_3a/iso14443_3a_poller.h"),
        File("protocols/iso14443_3b/iso14443_3b_poller.h"),
        File("protocols/iso14443_4a/iso14443_4a_poller.h"),
        File("protocols/iso14443_4b/iso14443_4b_poller.h"),
        File("protocols/iso15693_3/iso15693_3_poller.h"),
        File("protocols/felica/felica_poller.h"),
        File("protocols/mf_ultralight/mf_ultralight_poller.h"),
        File("protocols/mf_classic/mf_classic_poller.h"),
        File("protocols/mf_plus/mf_plus_poller.h"),
        File("protocols/mf_desfire/mf_desfire_poller.h"),
        File("protocols/slix/slix_poller.h"),
        File("protocols/st25tb/st25tb_poller.h"),
        File("protocols/ntag4xx/ntag4xx_poller.h"),
        File("protocols/type_4_tag/type_4_tag_poller.h"),
        File("protocols/emv/emv_poller.h"),
        # Listeners
        File("protocols/iso14443_3a/iso14443_3a_listener.h"),
        File("protocols/iso14443_4a/iso14443_4a_listener.h"),
        File("protocols/iso15693_3/iso15693_3_listener.h"),
        File("protocols/felica/felica_listener.h"),
        File("protocols/mf_ultralight/mf_ultralight_listener.h"),
        File("protocols/mf_classic/mf_classic_listener.h"),
        File("protocols/slix/slix_listener.h"),
        File("protocols/type_4_tag/type_4_tag_listener.h"),
        # Sync API
        File("protocols/iso14443_3a/iso14443_3a_poller_sync.h"),
        File("protocols/felica/felica_poller_sync.h"),
        File("protocols/mf_ultralight/mf_ultralight_poller_sync.h"),
        File("protocols/mf_classic/mf_classic_poller_sync.h"),
        File("protocols/st25tb/st25tb_poller_sync.h"),
        # Misc
        File("helpers/nfc_util.h"),
        File("helpers/felica_crc.h"),
        File("helpers/iso14443_crc.h"),
        File("helpers/iso13239_crc.h"),
        File("helpers/nfc_data_generator.h"),
        File("helpers/crypto1.h"),
    ],
)

libenv = env.Clone(FW_LIB_NAME="nfc")
libenv.ApplyLibFlags()

sources = libenv.GlobRecursive("*.c*")

lib = libenv.StaticLibrary("${FW_LIB_NAME}", sources)
libenv.Install("${LIB_DIST_DIR}", lib)
Return("lib")
